#include<iostream>
#include<cstring>
#include<fstream>
#include <stdio.h>
using namespace std;
string s,str,xuke;
fstream in;
char c,t[1000];
int mi,fangshi,sec;
int main() {
cout<<"制作人： 0x7223"<<endl<<"版权所有，侵权必究"<<endl<<"八进制 DDOS分部加密机2.0（收费版）"<<endl;
		cout<<"（如无许可，请联系wang1tian1kuo@163.com 主题： 2.0许可）请输入许可：";
		cin>>xuke;
		if(xuke=="7223"){cout<<"TRUE!";system("pause");system("cls");}
		else{
		cout<<"FALSE!!";system("pause");return 0;
		}
	
	while(1) {
		cout<<"制作人： 0x7223"<<endl<<"版权所有，侵权必究"<<endl<<"八进制 DDOS分部加密机2.0（收费版）"<<endl;
		cout<<"解密方式： "<<endl<<"1 )文件型"<<endl<<"2 )直接型" <<endl<<"3 )更新说明 "<<endl ; fflush(stdin);
		cin>>sec;
		//————————————————————————
		//文件型
		//————————————————————————
		if (sec==1) {
			cout<<"文件型：："<<endl<<
			    "(输入数字)方式："<<endl<<"1 ) 加密"<<endl<<"2 ) 解密"<<endl<<"Ctrl+c退出"<<endl; fflush(stdin);
			cin>>fangshi;
			if (fangshi==1) {fflush(stdin);
				cout<<"输入密钥（数字）";
				cin>>mi;
				cout<<"文件中不能有空格"<<endl<<"如未事先将加密文件放入in.txt中,请关闭程序，放入后再重启；"<<"如已放置，";
				system("pause") ;
				ofstream file2;
				in.open("in.txt",ios::in);
				if(!in) cout<<"Error...\n";
				cin.unsetf(ios::skipws);
				while(!in.eof()){
					in.get(c);
					s+=c;
				} 

				//	while(!in.eof()) in>>s;
				in.close();
				cin.get();
				file2.open("out.txt", ios::trunc);
				for( int i=0; i<s.length(); i++) {
					s[i]+=mi;
				}
				file2<<s;
				file2<<printf("\b");
				file2.close();
				cout<<endl<<"成功写入，保存在\"out.txt\""<<endl;
				system("pause");
				system("cls");
			}
			//————————————————————————
			if (fangshi==2) {fflush(stdin);
				cout<<"输入密钥（数字）";
				cin>>mi;
				cout<<"文件中不能有空格"<<endl<<"如未事先将密文放入in.txt中,请关闭程序，放入后再重启；"<<"如已放置，";
				system("pause") ;
				ofstream file2;
				in.open("in.txt",ios::in);
				if(!in) cout<<"Error...\n";
				cin.unsetf(ios::skipws);
				while(!in.eof()) {
					in.get(c);
					s+=c;
				} 
				in.close();
				cin.get();
				file2.open("out.txt", ios::trunc);
				for( int i=0; i<s.length(); i++) {
					s[i]-=mi;
				}
				file2<<s;
				file2.close();
				cout<<endl<<"成功写入，保存在\"out.txt\""<<endl;
				system("pause");
				system("cls");
			}
			if (fangshi!=1&&fangshi!=2) {
				cout<<"请输入1或2或3  :"<<endl ; fflush(stdin);
				cin>>fangshi;
			}
		}
		//————————————————————————————————
		//直接模式
		//————————————————————————————————
		if(sec==2) {
			cout<<"直接型：：复制的话先选取再右键，粘贴直接右键"<<endl<<
			    "(输入数字)方式："<<endl<<"1 ) 加密"<<endl<<"2 ) 解密"<<endl<<"Ctrl+c退出"<<endl; fflush(stdin);
			cin>>fangshi;
			if (fangshi==1) {
				cout<<"(数字)输入密钥:  "; fflush(stdin);
				cin>>mi;
				cout<<"输入加密源文件(只有一行)：";
				fflush(stdin);
				cin>>t;
				s=t;
				for( int i=0; i<s.length(); i++) s[i]+=mi;
				cout<<s<<endl<<endl;
				system("pause");
				system("cls");
			}
			if (fangshi==2) {
				cout<<"(数字)输入密钥:  "; fflush(stdin);
				cin>>mi;
				cout<<"输入加密源文件(只有一行)：";
				fflush(stdin);
				cin>>t;
				s=t;
				for( int i=0; i<s.length(); i++) s[i]-=mi;
				cout<<s<<endl<<endl;
				system("pause");
				system("cls");
			}
			if (fangshi!=1&&fangshi!=2&&fangshi!=3) {
				cout<<"请输入1或2或3  :"<<endl ; fflush(stdin);
				cin>>fangshi;
			}
		}
		if (sec==3) {
			cout<<"————————————————————————————"<<endl;
			cout<<"更新日志1.2 2020/12/18" <<endl<<"增加密钥功能"<<endl<<endl;
			cout<<"更新日志1.3 2020/12/19" <<endl<<"增加储存文件功能,修复储存乱码问题" <<endl<<endl;
			cout<<"更新日志1.4 2020/12/19" <<endl<<"为1.2与1.3版整合" <<endl<<endl;
			cout<<"更新日志1.5 2020/12/20" <<endl<<"增加识别空格功能，密文现在可以有空格" <<endl<<endl;
			cout<<"更新日志1.6 2020/12/21" <<endl<<"增加读取并加密文件功能" <<endl<<endl;
			cout<<"更新日志2.0 2020/12/25" <<endl<<"官方软件，现需收费获得许可" <<endl<<endl; 
			cout<<"————————————————————————————"<<endl;
			system("pause");
			system("cls");
		}
		if (sec!=1&&sec!=2&&sec!=3) {
			cout<<"请输入1或2或3  :"<<endl ;
			cin>>sec;
			system("pause");
			system("cls");
		}
	}
	return 0;

}

